package org.upo.eps.it.phama.util;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import org.apache.log4j.Logger;

/**
 * Clase estática con utilidades varias.
 *
 * @author grupo 4
 */
public class Utils {

    private static final Logger LOG = Logger.getLogger(Utils.class);

    /**
     * El método devuelve el valor correspondiente a la propiedad
     * <code>property</code> del archivo
     * <code>file</code>
     *
     * @param file Nombre del archivo de propiedades del que se quiere consultar
     * la propiedad <code>property</code>.
     * @param property Nombre de la propiedad a consultar.
     * @return String Valor de la propiedad <code>property</code>
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static String getProperty(String file, String property) throws FileNotFoundException, IOException {
        Properties prop = new Properties();
        prop.load(new FileInputStream(file));
        return prop.getProperty(property);
    }

    public static void log(String logType, String message) {
        switch (logType) {
            case "debug":
                LOG.debug(message);
                break;
            case "info":
                LOG.info(message);
                break;
            case "error":
                LOG.error(message);
                break;
        }
    }

    public static String getMd5(String password) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.reset();
        md.update(password.getBytes());
        byte[] digest = md.digest();
        BigInteger bigInt = new BigInteger(1, digest);
        String md5 = bigInt.toString(16);
        while (md5.length() < 32) {
            md5 = "0" + md5;
        }
        return md5.trim().toLowerCase();
    }
}
